﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace HCMUS_SearchService_Group2
{
    /////////////////////////////////////////////////
    /// \brief Lớp chuyển đổi chuỗi.
    /// \author Trần Minh Nhật -   0912322.
    /// \details <h3>Giúp format cũng như convert chuỗi cho phù hợp</h3>
    ////////////////////////////////////////////////
    public static class TranslateHelper
    {
        private readonly static Dictionary<char, char> convert = new Dictionary<char, char> { { 'á', 'a' }, { 'à', 'a' }, { 'ả', 'a' }, { 'ã', 'a' }, { 'ạ', 'a' }, { 'â', 'a' }, { 'ấ', 'a' }, { 'ầ', 'a' }, { 'ẩ', 'a' }, { 'ẫ', 'a' }, { 'ậ', 'a' }, { 'ă', 'a' }, { 'ắ', 'a' }, { 'ằ', 'a' }, { 'ẳ', 'a' }, { 'ẵ', 'a' }, { 'ặ', 'a' }, { 'é', 'e' }, { 'è', 'e' }, { 'ẻ', 'e' }, { 'ẽ', 'e' }, { 'ẹ', 'e' }, { 'ê', 'e' }, { 'ế', 'e' }, { 'ề', 'e' }, { 'ể', 'e' }, { 'ễ', 'e' }, { 'ệ', 'e' }, { 'í', 'i' }, { 'ì', 'i' }, { 'ỉ', 'i' }, { 'ĩ', 'i' }, { 'ị', 'i' }, { 'ó', 'o' }, { 'ò', 'o' }, { 'ỏ', 'o' }, { 'õ', 'o' }, { 'ọ', 'o' }, { 'ô', 'o' }, { 'ố', 'o' }, { 'ồ', 'o' }, { 'ổ', 'o' }, { 'ỗ', 'o' }, { 'ộ', 'o' }, { 'ơ', 'o' }, { 'ớ', 'o' }, { 'ờ', 'o' }, { 'ở', 'o' }, { 'ỡ', 'o' }, { 'ợ', 'o' }, { 'ú', 'u' }, { 'ù', 'u' }, { 'ủ', 'u' }, { 'ũ', 'u' }, { 'ụ', 'u' }, { 'ư', 'u' }, { 'ứ', 'u' }, { 'ừ', 'u' }, { 'ử', 'u' }, { 'ữ', 'u' }, { 'ự', 'u' }, { 'ý', 'y' }, { 'ỳ', 'y' }, { 'ỷ', 'y' }, { 'ỹ', 'y' }, { 'ỵ', 'y' }, { 'đ', 'd' } };

        /////////////////////////////////////////////////
        /// \brief Định dạng lại
        /// \param[in] string input.
        /// \returns string .
        /// \details <h3>Định dạng lại chuỗi loại bỏ các kí tự hoa, khoảng trắng, tiếng việt</h3>
        /////////////////////////////////////////////////
        public static string FormatInputString(string input)
        {
            string temp = string.Empty;
            if (null != input && string.Empty != input)
            {               
                string lowerInput = input.ToLower();
                lowerInput = lowerInput.Trim();
                lowerInput = Regex.Replace(lowerInput, @"\s+", " ");
                for (int i = 0; i < lowerInput.Length; i++)
                {
                    if (convert.ContainsKey(lowerInput[i]))
                    {
                        temp += convert[lowerInput[i]];
                    }
                    else
                    {
                        temp += lowerInput[i];
                    }
                }
            }

            return temp;
        }
    }
}
